Methods, systems, and media for dynamically detecting mobile environment information

ABSTRACT

Methods, systems, and media for dynamically detecting mobile environment information are provided. In some implementations, a method for detecting mobile environment information for advertisement requests, the method comprising: receiving a request for advertising content from an advertisement tag; applying one or more JavaScript objects to return a URL of an advertisement web view, wherein the advertisement website is generated by an advertisement software development kit to contain an advertisement responsive to the request; extracting keywords from the URL of the advertisement web view; determining whether the advertisement tag is running within a mobile application based on a comparison of the extracted keywords with known mobile application information; in response to determining that the advertisement tag is running within the mobile application, determining the advertisement software development kit from a plurality of advertisement software development kits that the advertisement tag is running in by: applying a plurality of JavaScript objects that are made available by the advertisement software development kit to return properties of the advertisement software development kit; and comparing the returned properties with a database of known software development kit information; and transmitting an indication that associates the advertisement software development kit used within a mobile application environment with the advertisement tag.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/590,795, filed Oct. 2, 2019, which is a continuation of U.S. patentapplication Ser. No. 14/978,625, filed Dec. 22, 2015, each of which ishereby incorporated by reference herein in its entirety.

TECHNICAL FIELD

The disclosed subject matter relates to dynamically detecting mobileenvironment information. More particularly, the disclosed subject matterrelates to distinguishing between advertisement requests or othertraffic from mobile software applications and advertisement requests orother traffic from mobile web browsing applications.

BACKGROUND

Online advertisements are created with the goal of having theadvertisements viewed, listened to, or otherwise received by a targetaudience. The target audience may be, for example, one or more userswith a set of particular interests or one or more users falling into aparticular demographic or psychographic group. However, distributingsuch advertisements to the desired audience is a difficult process. Itis often difficult for brand managers, ad networks, publishers,advertisers, and/or advertising agencies (collectively referred toherein as “advertisers”) to control and manage the service of theiradvertisements.

For example, online advertisements allow the publishers of well-viewedwebsites to derive a profit from their web traffic. To do this, thesewebsite publishers can place an advertisement tag on their webpages,which causes the webpage to load additional content that is delivered byan advertisement network. Such an advertisement tag includes anadvertisement as well as code that records or otherwise detects theviewer's interaction with a particular webpage. In return, the websitepublisher can be compensated by the advertisement network as viewersview the advertisement and/or interact with the advertisement.

With the advent of mobile devices, such as smartphones and tabletcomputing devices, a unique media environment for reaching viewers hasbeen created. As such, rich media display advertising in mobile softwareapplications and from mobile web browsing applications has becomeincreasingly popular. For example, in some cases, advertisements arerequested from a mobile web browsing application in response to themobile web browsing application user accessing a web page. In anotherexample, mobile application developers frequently incorporatefunctionality into their applications that allows such advertisements tobe served within the mobile software application to the applicationusers.

As advertising budgets shift to accommodate the rapid growth of mobileadvertising, there is a requirement for advertisers, such as brandmanagers and advertising agencies, to monitor and verify the amount thathas been spent in this mobile environment. This, however, has proved tobe a difficult task as mobile software applications present uniquechallenges with regard to verification. Thus, there is therefore a needin the art for approaches for distinguishing between advertisementrequests or other traffic from mobile software applications andadvertisement requests or other traffic from mobile web browsingapplications.

Accordingly, it is desirable to provide methods, systems, and media thatovercome these and other deficiencies in the prior art.

SUMMARY

In accordance with some embodiments of the disclosed subject matter,mechanisms for dynamically detecting mobile environment information areprovided.

In accordance with some embodiments of the disclosed subject matter, amethod for detecting mobile environment information for advertisementrequests is provided, the method comprising: receiving a request foradvertising content from an advertisement tag; applying one or moreJavaScript objects to return a URL of an advertisement web view, whereinthe advertisement website is generated by an advertisement softwaredevelopment kit to contain an advertisement responsive to the request;extracting keywords from the URL of the advertisement web view;determining whether the advertisement tag is running within a mobileapplication based on a comparison of the extracted keywords with knownmobile application information; in response to determining that theadvertisement tag is running within the mobile application, determiningthe advertisement software development kit from a plurality ofadvertisement software development kits that the advertisement tag isrunning in by: applying a plurality of JavaScript objects that are madeavailable by the advertisement software development kit to returnproperties of the advertisement software development kit; and comparingthe returned properties with a database of known software developmentkit information; and transmitting an indication that associates theadvertisement software development kit used within a mobile applicationenvironment with the advertisement tag.

In some embodiments, the method further comprises adjusting anadvertisement budget for advertisements presented within mobileapplications based on the transmitted indication.

In some embodiments, the determining the advertisement softwaredevelopment kit from the plurality of advertisement software developmentkits that the advertisement tag is running further comprises: applying aJavaScript object that returns a string of a user agent headertransmitted in the request to an advertisement server; and comparing atleast a portion of the string of the user agent header with valuesstored in a database of known software development kit information.

In some embodiments, the determining the advertisement softwaredevelopment kit from the plurality of advertisement software developmentkits that the advertisement tag is running further comprises:identifying HTML elements that have been injected in the advertisementweb view by the advertisement software development kit; and comparing atleast a portion of the identified HTML elements with document propertiesstored in a database of known software development kit information.

In some embodiments, the method further comprises continuing to applythe plurality of JavaScript objects until a threshold confidence valuehas been met.

In some embodiments, the method further comprises: extracting propertyinformation using the plurality of JavaScript objects; transmitting aquery that includes the extracted property information to a database ofknown software development kit information; and receiving a response tothe query that includes one or more software development kits that matchthe extracted property information.

In accordance with some embodiments of the disclosed subject matter, asystem for detecting mobile environment information for advertisementrequests is provided, the system comprising: a hardware processor thatis configured to: receive a request for advertising content from anadvertisement tag; apply one or more JavaScript objects to return a URLof an advertisement web view, wherein the advertisement website isgenerated by an advertisement software development kit to contain anadvertisement responsive to the request; extract keywords from the URLof the advertisement web view; determine whether the advertisement tagis running within a mobile application based on a comparison of theextracted keywords with known mobile application information; inresponse to determining that the advertisement tag is running within themobile application, determine the advertisement software development kitfrom a plurality of advertisement software development kits that theadvertisement tag is running in by: applying a plurality of JavaScriptobjects that are made available by the advertisement softwaredevelopment kit to return properties of the advertisement softwaredevelopment kit; and comparing the returned properties with a databaseof known software development kit information; and transmit anindication that associates the advertisement software development kitused within a mobile application environment with the advertisement tag.

In accordance with some embodiments of the disclosed subject matter, anon-transitory computer-readable medium containing computer executableinstructions that, when executed by a processor, cause the processor toperform a method for detecting mobile environment information foradvertisement requests is provided, the method comprising: receiving arequest for advertising content from an advertisement tag; applying oneor more JavaScript objects to return a URL of an advertisement web view,wherein the advertisement website is generated by an advertisementsoftware development kit to contain an advertisement responsive to therequest; extracting keywords from the URL of the advertisement web view;determining whether the advertisement tag is running within a mobileapplication based on a comparison of the extracted keywords with knownmobile application information; in response to determining that theadvertisement tag is running within the mobile application, determiningthe advertisement software development kit from a plurality ofadvertisement software development kits that the advertisement tag isrunning in by: applying a plurality of JavaScript objects that are madeavailable by the advertisement software development kit to returnproperties of the advertisement software development kit; and comparingthe returned properties with a database of known software developmentkit information; and transmitting an indication that associates theadvertisement software development kit used within a mobile applicationenvironment with the advertisement tag.

BRIEF DESCRIPTION OF THE DRAWINGS

Various objects, features, and advantages of the disclosed subjectmatter can be more fully appreciated with reference to the followingdetailed description of the disclosed subject matter when considered inconnection with the following drawings, in which like reference numeralsidentify like elements.

FIG. 1 shows an illustrative example of an advertisement web viewgenerated by a mobile advertising vendor software development kit thatcontains an advertisement and associated objects in accordance with someembodiments of the disclosed subject matter.

FIG. 2 shows an illustrative example of a process for dynamicallydetecting mobile environment information in accordance with someembodiments of the disclosed subject matter.

FIG. 3 shows an example of a generalized schematic diagram of a systemon which the mechanisms for dynamically detecting mobile environmentinformation as described herein can be implemented in accordance withsome embodiments of the disclosed subject matter.

FIG. 4 shows an example of hardware that can be used to implement one ofa computing device and a server depicted in FIG. 3 in accordance withsome embodiments of the disclosed subject matter.

DETAILED DESCRIPTION

In accordance with some embodiments of the disclosed subject matter,mechanisms (which can include methods, systems, and media) fordynamically detecting mobile environment information are provided.

In some embodiments, mobile advertising activity can includeadvertisements served from a mobile version of a website or versions ofadvertisements specifically designed to be served to a mobile device orin a mobile web environment. For example, a mobile web browsingapplication executing on a mobile device can visit a publisher websiteand, in response to visiting the publisher website, the mobile webbrowsing application can send an advertisement tag, which may containinformation about the advertisement placement on the page and/orinformation about the application user, to request for an advertisementfrom an advertisement server. The resulting advertisement can betransmitted to the mobile web browsing application, which may includeuniform resource locator (URL) that identifies the location of theadvertisement (e.g., a creative hosted on a content server). This canbe, for example, an advertisement-sized iframe running within a webpage.

Additionally or alternatively, mobile advertising activity can includeadvertisements that are presented in mobile applications executing on amobile device as the mobile application user uses the mobileapplication. As such, the mobile application executing on the mobiledevice can send a request for an advertisement to be served in themobile application. It should be noted that, because the mobileapplication in which the creative or advertisement is being display isgenerally not running JavaScript and/or HTML5 and is instead running thenative code of the operating system of the mobile device, theadvertisement is presented in a container called a web view, which is anadvertisement-sized web page running JavaScript and/or HTML5 (sometimesreferred to herein as an “advertisement web view”). This is shown, forexample, in FIG. 1 in which an illustrative advertisement web view hasbeen created by the mobile advertising vendor SDK to contain anadvertising creative, such as a banner advertisement.

It should also be noted that the advertisement requesting functionalitycan be provided by a software development kit (SDK) that the developerof the mobile application can integrate into the mobile application. TheSDK can include a code library including an application programminginterface that allows the mobile application to communicate with anadvertisement server or any other suitable advertisement platform torequest and receive advertisements in the mobile application.

Generally speaking, in order to determine whether the advertisement tagis running within a mobile software application environment, themechanisms can analyze information extracted from portions of the SDK.For example, as shown in FIG. 1 , the mechanisms can analyze extractedinformation from the advertisement web view created by the mobileadvertisement vendor SDK to contain the advertisement (e.g., a banneradvertisement). In another example, as also shown in FIG. 1 , themechanisms can analyze extracted information from global JavaScriptobjects that can be made available in the Window Object by the SDK. Inyet another example, as also shown in FIG. 1 , the mechanisms cananalyze extracted information from specific elements injected into theadvertisement web view by, for example, the advertisement vendor SDK,such as one or more HTML document object model (DOM) objects. It shouldbe noted that any suitable information can be extracted from theadvertisement web view or the one or more objects within theadvertisement web view. It should also be noted that any suitablecombination of information can be extracted from the advertisement webview and/or the one or more objects within the advertisement web view.It should further be noted that, in some embodiments, information cancontinue to be extracted and analyzed from the advertisement web viewand/or the one or more objects within the advertisement web view until adetermination as to whether the advertisement tag is executing within amobile web browsing application or a mobile software application can bemade.

These mechanisms can be used in a variety of applications. For example,in response to receiving an indication as to the mobile operatingenvironment associated with the advertisement tag, applications that aremonitoring advertisement spent can aggregate such mobile environmentinformation over a particular period of time and can determine whetheradvertisement budgets are appropriately allocated. In another example,in response to receiving an indication as to the mobile operatingenvironment associated with the advertisement tag, applications that aregenerating and/or determining viewability information can take intoaccount such mobile environment information. In yet another example,applications that intercept advertisement requests and supplement theadvertisement requests with additional information, such as deviceinformation, placement information, viewability information, and/orother suitable information or statistics, can supplement theadvertisement requests with mobile environment information.

These and other features for dynamically detecting mobile environmentinformation are described further in connection with FIGS. 1-4 .

Turning to FIG. 2 , an example 200 of an illustrative process fordetecting whether an advertisement request is received from a mobilesoftware application or a mobile web browser application is shown inaccordance with some embodiments of the disclosed subject matter.

At 210, process 200 can begin by receiving a request for advertisingcontent from an advertisement tag on a website. In some embodiments,this request can be received by any suitable device or combination ofdevices. For example, as shown in FIG. 3 , the request can be receivedby server 302, or by a user device 310. As another example, the requestcan be received by an advertiser's server device (e.g., a server thatprovides advertising content). As yet another example, the request canbe received by a third party server device (e.g., an intermediary serverthat handles a request for advertising content by redirecting therequest for advertising content).

In a more particular example, a mobile web browsing applicationexecuting on a mobile device can visit a publisher website and, inresponse to visiting the publisher website, the mobile web browsingapplication can send an advertisement tag, which may contain informationabout the advertisement placement on the page and/or information aboutthe application user, to request for an advertisement from anadvertisement server. The resulting advertisement can be transmitted tothe mobile web browsing application, which may include uniform resourcelocator (URL) that identifies the location of the advertisement (e.g., acreative hosted on a content server). This can be, for example, anadvertisement-sized iframe running within a webpage.

In some embodiments, the request can include any suitable information.For example, in some embodiments, the request can include informationfor selecting an advertisement. In a more particular example, therequest can include information about the website, about the size of anarea on the website for the advertisement, about the computing devicefrom which the request originated, and/or any other suitableinformation. In another more particular example, in connection with theuse of an intermediary server, the request can be supplemented withadditional information relating to the device transmitting the request,a user account associated with the device, webpage information,publisher information, historical information, etc.

In another more particular example, a mobile software applicationexecuting on the mobile device can send a request for an advertisementto be served in the mobile software application. As mentioned above,because the mobile software application in which the creative oradvertisement is being display is generally not running JavaScriptand/or HTML5 and is instead running the native code of the operatingsystem of the mobile device, the advertisement can be presented in acontainer called an advertisement web view. This is shown, for example,in FIG. 1 in which an illustrative advertisement web view has beencreated by the mobile advertising vendor SDK to contain an advertisingcreative, such as a banner advertisement.

In some embodiments, process 200 for dynamically detecting mobileenvironment information (e.g., mobile application environment versusmobile web browsing environment) can include determining whether theadvertisement tag is running inside a mobile software application usingvarious techniques on object and/or property information at 220. Forexample, a URL detection technique can be applied that extracts keywordsfrom the URL of the advertisement web view to determine whether theadvertisement tag is running inside a mobile software application. In amore particular example, as shown in FIG. 1 , process 200 can use globalJavaScript objects that are made available in the Window Object by theSDK, such as the JavaScript Window Location object(window.location.href), to return the URL of the advertisement web viewand, in response to extracting keywords from the URL of theadvertisement web view, process 200 can determine whether theadvertisement tag is running inside a mobile software application (e.g.,the keyword “applewebdata://” can indicate that the advertisement tag isrunning within a mobile software application associated with a softwaredeveloper for Apple platforms). In continuing this example, process 200can transmit a query that includes the extracted URL keywords to adatabase containing mobile software application information (e.g.,information on mobile applications that are available for downloadand/or purchase from an online marketplace), where the response to thequery includes an identification of one or more mobile softwareapplications corresponding to the extract URL keywords. Theidentification can include mobile application identificationinformation, mobile application developer information, and/or anindicator that the advertisement request is received from a mobilesoftware application (e.g., as opposed to a mobile web browser).

In response to determining that the advertisement tag is being executedwithin a mobile software application, for example, upon applying the URLdetection technique, process 200 can store an indication that theadvertisement tag is being executed within a mobile software applicationat 230. Otherwise, in response to determining that the advertisement tagis received from a mobile web browsing application, process 200 canstore an indication that the advertisement tag is being executed withina mobile web browsing application at 240. These indications can, forexample, be used to provide advertisers with a signal of how muchadvertisement traffic is originating from particular mobileenvironments. These indications can also, for example, be used toassists advertisers in determining whether advertisement budgetsassociated with different mobile environments are appropriatelyallocated based on how much advertisement traffic is coming from mobileweb browsing applications and from within mobile software applications.

In some embodiments, process 200 for dynamically detecting mobileenvironment information (e.g., mobile application environment versusmobile web browsing environment) can include determining the SDK thatthe advertisement tag is running inside using various techniques onobject and/or property information at 250. As described above,advertisement requesting functionality can be provided by a softwaredevelopment kit or SDK that the developer of the mobile softwareapplication can integrate into the mobile software application. The SDKcan include a code library including an application programminginterface that allows the mobile software application to communicatewith an advertisement server or any other suitable advertisementplatform to request and receive advertisements in the mobile softwareapplication. Process 200 can use various techniques to extractinformation from the advertisement web view and/or objects associatedwith the advertisement web view, where the extract information can beanalyzed to determine which particular SDK the advertisement tag isrunning inside.

In some embodiments, process 200 can apply a combination of techniqueswith the advertisement web view to determine the SDK that theadvertisement tag is running inside.

For example, as described above, process 200 can apply a URL detectiontechnique that extracts keywords from the URL of the advertisement webview to determine the SDK that the advertisement tag is running in. In amore particular example, process 200 can review extracted keywords fromthe URL of the advertisement web view to determine the particularadvertisement SDK. In continuing this example, process 200 can transmita query that includes the extracted keywords to a database containingSDK-related information, where the response to the query can include theidentification of one or more advertisement SDKs that meet the criteriaof the query—e.g., advertisement SDKs that generate advertisement webviews with URL information meeting the query criteria.

In another example, process 200 can apply a JavaScript detectiontechnique that scans JavaScript objects made available in the WindowObject by the advertisement SDK to determine the SDK that theadvertisement tag is running in. In a more particular example, as shownin FIG. 1 , process 200 can scan through one or more global JavaScriptobjects to determine whether a known set of publicly availableproperties have been exposed by the advertisement SDK. In another moreparticular example, process 200 can extract property information fromone or more global JavaScript objects made available in the WindowObject by the advertisement SDK. In continuing this example, process 200can transmit a query that includes the extracted information to adatabase containing SDK-related information, where the response to thequery can include the identification of one or more advertisements SDKsthat generate JavaScript objects having particular properties.Alternatively to transmitting a search query to a database containingSDK-related information, process 200 can analyze the extracted propertyinformation based on known property information from advertisement SDKs.For example, process 200 can determine whether a JavaScript object withthe name “AFMA_AddEventListener” exists within the extracted propertyinformation. In another example, process 200 can determine whether theextracted property information indicates that multiple JavaScriptobjects have a name that includes a particular set of characters, suchas AFMA.

In yet another example, process 200 can apply a user agent detectiontechnique that extracts keywords in the advertisement web view useragent string made available by the advertisement SDK to determine theSDK that the advertisement tag is running in. This can be madeavailable, for example, using the window.navigator.useragent JavaScriptobject shown in FIG. 1 . In a more particular example, process 200 canuse global JavaScript objects that are made available in the WindowObject by the advertisement SDK, such as the JavaScript objectwindow.navigator.useragent, to return the value of the user agent headersent to the server. Keywords from the user agent string can beextracted. Based on the extracted keywords from the user agent string,process 200 can determine the particular advertisement SDK that theadvertisement tag is running in. For example, process 200 can transmit aquery that includes the extracted keywords from the user agent string toa database containing SDK-related information, where the response to thequery can include the identification of one or more advertisements SDKsthat generate JavaScript objects having particular properties. In a moreparticular example, the database can include SDK-related informationsuch that a particular advertisement SDK includes user agent stringswith the characters “afma-sdk.” As such, the presence of such charactersare used to identify the use of the particular advertisement SDK.Alternatively to transmitting a search query to a database containingSDK-related information, process 200 can analyze the extracted keywordsbased on known property information from advertisement SDKs. Forexample, process 200 can determine whether the user agent stringcontains the characters “afma-sdk.”

In yet another example, an HTML Document Object Manager (DOM) techniquecan be applied that searches for particular HTML elements specific to anadvertisement SDK to determine the advertisement SDK that theadvertisement tag is running in. In a more particular example, process200 can conduct a search for HTML documents or elements injected in theadvertisement web view by the advertisement SDK. In continuing thisexample, by analyzing particular document properties, such asdocument.URL which returns the full URL of the HTML document anddocument.scripts which returns a collection of <script> elements in thedocument, process 200 can determine whether the advertisement SDK hasinjected a <script> HTML element with a specific URL. For example, for agiven set of advertisement SDKs, process 200 can have a set of HTML DOMobject hints for each advertisement SDK (e.g., one particularadvertisement SDK typically injects a <script> HTML element with aspecific URL) and can determine which advertisement SDK theadvertisement tag is likely running in based on the extracted documentproperties.

It should be noted that any suitable combination of the mobileenvironment detection techniques described above can be used todetermine the advertisement SDK that the advertisement tag is runningin. In some embodiments, a first technique can be applied and subsequenttechniques can continue to be applied until process 200 can determine,with a particular confidence value (e.g., greater than a confidencethreshold of 90%), that the advertisement tag is running within aparticular advertisement SDK. In some embodiments, a particular sequenceof the mobile environment detection techniques can be applied until theparticular advertisement SDK has been determined.

In some embodiments, additionally or alternatively to analyzing eachadvertisement tag, the advertisement request information received from aparticular device can be aggregated for a particular time period. One ormore of the mobile environment detection techniques described above canbe used to determine the advertisement SDK that the advertisement tag isrunning in. For advertisement tags from a particular device that areidentified as being received from a mobile software application, theaggregated information can be used to determine which advertisement SDKthat the advertisement tags are running in. In response, each of theadvertisement tags can be associated with the particular advertisementSDK.

Referring back to FIG. 2 , in response to determining the particularadvertisement SDK that the advertisement tag is running in, process 200can store an indication that associates the determined softwaredevelopment kit with the advertisement tag. In some embodiments, theindication can include additional information, such as advertisementplacement information, device information, developer information, etc.

FIG. 3 shows an example 300 of a generalized schematic diagram of asystem on which the mechanisms for dynamically detecting mobileenvironment information as described herein can be implemented inaccordance with some embodiments of the disclosed subject matter. Asillustrated, system 100 can include one or more user devices 310. Userdevices 310 can be local to each other or remote from each other. Userdevices 310 can be connected by one or more communications links 308 toa communication network 306 that can be linked to a server 302 via acommunications link 304.

System 300 can include one or more servers 302. Server 302 can be anysuitable server or servers for providing access to the mechanismsdescribed herein for dynamically detecting mobile environmentinformation, such as a processor, a computer, a data processing device,or any suitable combination of such devices. For example, the mechanismsfor dynamically detecting mobile environment information can bedistributed into multiple backend components and multiple frontendcomponents and/or user interfaces. In a more particular example, backendcomponents, such as mechanisms for receiving information related to oneor more advertising placements, parsing the information related to oneor more advertising placements, receiving and analyzing advertisementweb view and associated object information from an advertisement tagexecuting within an advertisement SDK, determining whether theadvertisement tag is running inside a mobile software application or amobile web browsing application, determining which advertisement SDK theadvertisement tag is running in, etc., can be performed on one or moreservers 302. In another more particular example, frontend components,such as presentation of a user interface for placing advertisement tagson a given webpage, initiating the mechanisms for dynamically detectingmobile environment information in connection with advertisements,receiving user input, etc., can be performed on one or more user devices310.

In some embodiments, each of user devices 310, and server 302 can be anyof a general purpose device such as a computer or a special purposedevice such as a client, a server, etc. Any of these general or specialpurpose devices can include any suitable components such as a hardwareprocessor (which can be a microprocessor, digital signal processor, acontroller, etc.), memory, communication interfaces, displaycontrollers, input devices, etc. For example, user device 310 can beimplemented as a personal computer, a laptop computer, a smartphone, atablet computer, a mobile telephone, a wearable computer, any othersuitable computing device, or any suitable combination thereof.

Communications network 306 can be any suitable computer network orcombination of such networks including the Internet, an intranet, awide-area network (WAN), a local-area network (LAN), a wireless network,a Wi-Fi network, a digital subscriber line (DSL) network, a frame relaynetwork, an asynchronous transfer mode (ATM) network, a virtual privatenetwork (VPN), an intranet, etc. Each of communications links 304 and308 can be any communications links suitable for communicating dataamong user devices 310 and server 302, such as network links, dial-uplinks, wireless links, hard-wired links, any other suitablecommunications links, or any suitable combination of such links. Notethat, in some embodiments, multiple servers 302 can be used to provideaccess to different mechanisms associated with the mechanisms describedherein for dynamically detecting mobile environment information.

FIG. 4 shows an example 400 of hardware that can be used to implementone or more of user devices 310, and servers 302 depicted in FIG. 3 inaccordance with some embodiments of the disclosed subject matter.Referring to FIG. 4 , user device 310 can include a hardware processor412, a display 414, an input device 416, and memory 418, which can beinterconnected. In some embodiments, memory 418 can include a storagedevice (such as a non-transitory computer-readable medium) for storing acomputer program for controlling hardware processor 412.

Hardware processor 412 can use the computer program to execute themechanisms described herein for executing a mobile web browsingapplication to access mobile webpages, downloading and/or installingmobile software applications such as those available from an onlinemarketplace, executing mobile software applications which presentin-application advertisements, transmit advertisement requests from anadvertisement tag on a website in response to a user accessing thewebsite using a mobile device, transmit advertisement requests from anadvertisement tag running in an advertisement SDK loaded in a mobilesoftware application, sending and receiving data through communicationslink 108, and/or for performing any other suitable task associated withthe mechanisms described herein. In some embodiments, hardware processor412 can send and receive data through communications link 108 or anyother communication links using, for example, a transmitter, a receiver,a transmitter/receiver, a transceiver, or any other suitablecommunication device. Display 414 can include a touchscreen, a flatpanel display, a cathode ray tube display, a projector, a speaker orspeakers, and/or any other suitable display and/or presentation devices.Input device 416 can be a computer keyboard, a computer mouse, atouchpad, a voice recognition circuit, a touchscreen, and/or any othersuitable input device.

Server 302 can include a hardware processor 422, a display 424, an inputdevice 426, and memory 428, which can be interconnected. In someembodiments, memory 428 can include a storage device (such as anon-transitory computer-readable medium) for storing data receivedthrough communications link 304 or through other links. The storagedevice can further include a server program for controlling hardwareprocessor 422. In some embodiments, memory 428 can include informationstored as a result of user activity (e.g., user instructions to specifyone or more advertising management techniques for particular advertisingplacements, etc.), and hardware processor 422 can receive informationabout advertising placements from user devices 310, (e.g., as describedabove in connection with process 200 of FIG. 2 ). In some embodiments,the server program can cause hardware processor 422 to, for example,execute one or more portions of process 200 as described above inconnection with FIG. 2 .

In a more particular example, hardware processor 422 can use thecomputer program to execute the mechanisms described herein forreceiving a request for advertisement content from an advertisement tagon a website in response to a user accessing the website using a mobiledevice, determining whether the advertisement tag is running inside amobile software application using one or more mobile environmentdetection techniques, storing indications that the advertisement tag isbeing executing within a mobile software application or a mobile webbrowsing application, determining which advertisement softwaredevelopment kit the advertisement tag is running in using one or moremobile environment detection techniques, storing an indication thatassociates the determined advertisement software development kit withthe advertisement tag, sending and receiving data through communicationslink 108, and/or for performing any other suitable task associated withthe mechanisms described herein.

Hardware processor 422 can use the server program to communicate withuser devices 310 as well as provide access to and/or copies of themechanisms described herein. It should also be noted that data receivedthrough communications link 304 or any other communications links can bereceived from any suitable source. In some embodiments, hardwareprocessor 422 can send and receive data through communications link 104or any other communications links using, for example, a transmitter, areceiver, a transmitter/receiver, a transceiver, or any other suitablecommunication device. In some embodiments, hardware processor 422 canreceive commands and/or values transmitted by one or more user devices310 and/or one or more users of server 302. Display 424 can include atouchscreen, a flat panel display, a cathode ray tube display, aprojector, a speaker or speakers, and/or any other suitable displayand/or presentation devices. Input device 426 can be a computerkeyboard, a computer mouse, a touchpad, a voice recognition circuit, atouchscreen, and/or any other suitable input device.

In some embodiments, server 302 can be implemented in one server or canbe distributed as any suitable number of servers. For example, multipleservers 302 can be implemented in various locations to increasereliability and/or increase the speed at which the server cancommunicate with user devices 310. Additionally or alternatively, asdescribed above in connection with FIG. 3 , multiple servers 302 can beimplemented to perform different tasks associated with the mechanismsdescribed herein.

It should be understood that the mechanisms described herein can, insome embodiments, include server-side software, server-side hardware,client-side software, client-side hardware, or any suitable combinationthereof. For example, the mechanisms described herein can encompass acomputer program written in a programming language recognizable byserver 102 and/or by user device 110 (e.g., a program written in aprogramming language, such as, Java, C, Objective-C, C++, C#,JavaScript, Visual Basic, or any other suitable approaches). As anotherexample, the mechanisms described herein can encompass one or more Webpages or Web page portions (e.g., via any suitable encoding, such asHyper Text Markup Language (“HTML”), Dynamic Hyper Text Markup Language(“DHTML”), Extensible Markup Language (“XML”), JavaServer Pages (“JSP”),Active Server Pages (“ASP”), Cold Fusion, or any other suitableapproaches).

In some embodiments, any suitable computer readable media can be usedfor storing instructions for performing the processes described herein.For example, in some embodiments, computer readable media can betransitory or non-transitory. For example, non-transitory computerreadable media can include media such as magnetic media (such as harddisks, floppy disks, etc.), optical media (such as compact discs,digital video discs, Blu-ray discs, etc.), semiconductor media (such asflash memory, electrically programmable read only memory (EPROM),electrically erasable programmable read only memory (EEPROM), etc.), anysuitable media that is not fleeting or devoid of any semblance ofpermanence during transmission, and/or any suitable tangible media. Asanother example, transitory computer readable media can include signalson networks, in wires, conductors, optical fibers, circuits, anysuitable media that is fleeting and devoid of any semblance ofpermanence during transmission, and/or any suitable intangible media.

It should be understood that the above described steps of the process ofFIG. 2 can be executed or performed in any order or sequence not limitedto the order and sequence shown and described in the figures. Also, someof the above steps of the process of FIG. 2 can be executed or performedsubstantially simultaneously where appropriate or in parallel to reducelatency and processing times. It should also be noted that, as usedherein, the term mechanism can encompass hardware, software, firmware,or any suitable combination thereof.

Accordingly, methods, systems, and media for dynamically detectingmobile environment information are provided.

Although the invention has been described and illustrated in theforegoing illustrative implementations, it is understood that thepresent disclosure has been made only by way of example, and thatnumerous changes in the details of implementation of the invention canbe made without departing from the spirit and scope of the invention.Features of the disclosed implementations can be combined and rearrangedin various ways.

What is claimed is:
 1. A method for detecting mobile environmentinformation for advertisement requests, the method comprising:receiving, using a hardware processor, a request for advertising contentfrom an advertisement tag; determining, using the hardware processor,whether the advertisement tag is running within one of a mobileapplication and a mobile web browsing application based on a comparisonof keywords associated with the advertisement tag with known mobileapplication information; in response to determining that theadvertisement tag is running within the mobile application, determining,using the hardware processor, the advertisement software development kitfrom a plurality of advertisement software development kits that theadvertisement tag is running in by: using a first technique that appliesone or more objects that are made available by the advertisementsoftware development kit to return properties of the advertisementsoftware development kit; identifying, using the hardware processor,elements that have been injected in an advertisement web view by theadvertisement software development kit; and comparing, using thehardware processor, at least a portion of the identified elements withdocument properties stored in a database of known software developmentkit information, wherein the comparing includes determining a confidencevalue associated with the first technique and determining whether tocontinue using the first technique for determining the advertisementsoftware development kit by comparing the confidence value with athreshold confidence value; transmitting, using the hardware processor,an indication that associates the advertisement software development kitused within a mobile application environment with the advertisement tag,wherein the advertisement tag is supplemented with informationassociated with the mobile application environment and the advertisementsoftware development kit used within the mobile application environment;and adjusting an advertisement budget for advertisements presentedwithin mobile applications based on the transmitted indication.
 2. Themethod of claim 1, further comprising applying the one or more objectsto return a URL of the advertisement web view, wherein the advertisementwebsite is generated by an advertisement software development kit tocontain an advertisement responsive to the request.
 3. The method ofclaim 2, further comprising extracting keywords from the URL of theadvertisement web view.
 4. The method of claim 1, further comprisingcontinuing to apply the one or more objects until a threshold confidencevalue has been met.
 5. The method of claim 1, wherein the determiningthe advertisement software development kit from the plurality ofadvertisement software development kits that the advertisement tag isrunning further comprises applying an object that returns a string of auser agent header transmitted in the request to an advertisement server.6. The method of claim 5, further comprising comparing at least aportion of the string of the user agent header with values stored in adatabase of known software development kit information.
 7. The method ofclaim 1, further comprising: extracting property information using theone or more objects; transmitting a query that includes the extractedproperty information to the database of known software development kitinformation; and receiving a response to the query that includes one ormore software development kits that match the extracted propertyinformation.
 8. The method of claim 1, further comprising, in responseto determining that the advertisement tag is running within the mobileweb browsing application, transmitting a second indication that theadvertisement tag was received from the mobile web browsing application,wherein the advertisement tag is supplemented with informationassociated with the mobile web browsing application.
 9. A system fordetecting mobile environment information for advertisement requests, thesystem comprising: a memory; and a hardware processor that, whenexecuting computer executable instructions stored in the memory, isconfigured to: receive a request for advertising content from anadvertisement tag; determine whether the advertisement tag is runningwithin one of a mobile application and a mobile web browsing applicationbased on a comparison of keywords associated with the advertisement tagwith known mobile application information; in response to determiningthat the advertisement tag is running within the mobile application,determine the advertisement software development kit from a plurality ofadvertisement software development kits that the advertisement tag isrunning in by: using a first technique that applies one or more objectsthat are made available by the advertisement software development kit toreturn properties of the advertisement software development kit;identifying elements that have been injected in an advertisement webview by the advertisement software development kit; and comparing atleast a portion of the identified elements with document propertiesstored in a database of known software development kit information,wherein the comparing includes determining a confidence value associatedwith the first technique and determining whether to continue using thefirst technique for determining the advertisement software developmentkit by comparing the confidence value with a threshold confidence value;transmit an indication that associates the advertisement softwaredevelopment kit used within a mobile application environment with theadvertisement tag, wherein the advertisement tag is supplemented withinformation associated with the mobile application environment and theadvertisement software development kit used within the mobileapplication environment; and adjust an advertisement budget foradvertisements presented within mobile applications based on thetransmitted indication.
 10. The system of claim 9, wherein the hardwareprocessor is further configured to apply the one or more objects toreturn a URL of the advertisement web view, wherein the advertisementwebsite is generated by an advertisement software development kit tocontain an advertisement responsive to the request.
 11. The system ofclaim 10, wherein the hardware processor is further configured toextract keywords from the URL of the advertisement web view.
 12. Thesystem of claim 9, wherein the hardware processor is further configuredto continue to apply the one or more objects until a thresholdconfidence value has been met.
 13. The system of claim 9, wherein thedetermining the advertisement software development kit from theplurality of advertisement software development kits that theadvertisement tag is running further comprises applying an object thatreturns a string of a user agent header transmitted in the request to anadvertisement server.
 14. The system of claim 13, wherein the hardwareprocessor is further configured to compare at least a portion of thestring of the user agent header with values stored in a database ofknown software development kit information.
 15. The system of claim 9,wherein the hardware processor is further configured to: extractproperty information using the one or more objects; transmit a querythat includes the extracted property information to the database ofknown software development kit information; and receive a response tothe query that includes one or more software development kits that matchthe extracted property information.
 16. The system of claim 9, whereinthe hardware processor is further configured to, in response todetermining that the advertisement tag is running within the mobile webbrowsing application, transmit a second indication that theadvertisement tag was received from the mobile web browsing application,wherein the advertisement tag is supplemented with informationassociated with the mobile web browsing application.
 17. Anon-transitory computer-readable medium containing computer-executableinstructions that, when executed by a hardware processor, cause thehardware processor to perform a method for detecting mobile environmentinformation for advertisement requests, the method comprising receivinga request for advertising content from an advertisement tag; determiningwhether the advertisement tag is running within one of a mobileapplication and a mobile web browsing application based on a comparisonof keywords associated with the advertisement tag with known mobileapplication information; in response to determining that theadvertisement tag is running within the mobile application, determiningthe advertisement software development kit from a plurality ofadvertisement software development kits that the advertisement tag isrunning in by: using a first technique that applies one or more objectsthat are made available by the advertisement software development kit toreturn properties of the advertisement software development kit;identifying elements that have been injected in an advertisement webview by the advertisement software development kit; and comparing atleast a portion of the identified elements with document propertiesstored in a database of known software development kit information,wherein the comparing includes determining a confidence value associatedwith the first technique and determining whether to continue using thefirst technique for determining the advertisement software developmentkit by comparing the confidence value with a threshold confidence value;transmitting an indication that associates the advertisement softwaredevelopment kit used within a mobile application environment with theadvertisement tag, wherein the advertisement tag is supplemented withinformation associated with the mobile application environment and theadvertisement software development kit used within the mobileapplication environment; and adjusting an advertisement budget foradvertisements presented within mobile applications based on thetransmitted indication.